#ifndef OGRE_SK_H
#define OGRE_SK_H

class OgreSK : public Ogre::Singleton<OgreSK>, OIS::KeyListener, OIS::MouseListener
{
public:
	OgreSK(void);
	~OgreSK(void);

	bool initialiseOgre(void);
	void updateOgre(double timeSinceLastFrame);

	bool OgreSK::keyReleased(const OIS::KeyEvent &evt);
	bool OgreSK::keyPressed(const OIS::KeyEvent &evt);

	bool OgreSK::mouseMoved(const OIS::MouseEvent &evt);
	bool OgreSK::mousePressed(const OIS::MouseEvent &evt, OIS::MouseButtonID id);
	bool OgreSK::mouseReleased(const OIS::MouseEvent &evt, OIS::MouseButtonID id);

	Ogre::Root					*m_pRoot;
	Ogre::RenderWindow			*m_pRenderWnd;
	Ogre::Timer					*m_pTimer;
	Ogre::Log					*m_pLog;
	Ogre::Viewport				*m_pViewport;

	OgreBites::SdkTrayManager	*m_pTrayMgr;

	OIS::InputManager			*m_pInputMgr;
	OIS::Keyboard				*m_pKeyboard;
	OIS::Mouse					*m_pMouse;

	CEGUI::OgreRenderer			*m_pCEGUIRenderer;

private:
	OgreSK(const OgreSK&);
	OgreSK& operator= (const OgreSK&);

	bool loadResources(void);
	bool initialiseCEGUI(void);

	Ogre::String				m_sPluginsCfg;
	Ogre::String				m_sResourcesCfg;
};

#endif